﻿using System;
using System.Collections.Generic;
//using System.Linq;
using System.Text;
using BaseModel;

namespace LoggingDataAcceptor
{
    public interface LoggingDataSender
    {
        /**
             * 函数名 ：InitLoggingInfo
             * 作用   ：初始化函数，用来初始化一些必要的信息
             * 参数   ：Equipment 设备的相关信息
             *          WellInfo  作业经的相关信息
             * 返回值 ：无
             * 用法   ：此函数需要在测井之前调用，以便数据接收端做些必要的初始化工作。
             */
        void InitLoggingInfo(Equipment eqm, WellInfo wi);

        /**
         * 函数名 ：StartLoggingData
         * 作用   ：开始测井作业，发送本次测井作业的曲线信息，约定后续要发送的曲线数据的顺序
         * 参数   ：WellLoggingInfo[] 本次作业的曲线信息数组，后续发送的数据全部按照这个顺序来解释
         * 返回值 ：返回是否正确接受，如果返回false，需要重新调用
         * 用法   ：此函数在每次测井作业开始的时候调用一次，通知数据接受端作业开始和本次作业要测量的所有曲线信息
         */
        bool StartLoggingData(WellLoggingInfo[] wli);

        /**
         * 函数名 ：SendLoggingData
         * 作用   ：发送一个深度点的测井数据，
         * 参数   ：WellLoggingGroupPoint 深度点的测井数据信息，包含了该点测井深度，测井时间
         *          和对应的测井曲线数据，测井曲线数据的顺序，必须和StartLoggingData函数中发送的曲线信息完全相同
         * 返回值 ：返回是否正确接受，如果返回false，需要重新调用以确保正确发送
         * 用法   ：此函数在测井过程中调用，每个深度点的数据测量完成后调用，
         */
        bool SendLoggingData(WellLoggingPoint gp);

        /**
         * 函数名 ：EndLoggingData
         * 作用   ：结束测井作业，通知测井作业结束
         * 参数   ：无
         * 返回值 ：无
         * 用法   ：此函数在每次测井作业结束的时候调用一次，通知数据接收端本次测井作业结束
         */
        void EndLoggingData();
    }
}
